如果你已經初步的學習完了Java的內容:
[Day06] 寫Android也要學Java!
那接下來可以開始了解Android的元件了,
從現在開始可以算是這一系列文章的第二部分。
這篇先從四大元件中的兩個元件開始介紹:
Activity、Service、BroadcastReceiver、ContentProvider。
其實經過了這些年的語言演變,這四個元件有了不同的改變及宿命…
趁著這次的寫稿整理,筆者看蠻多網路上的文章都有介紹Activity,
但都跟現在這些元件的理解有些落差了。筆者想了想,
覺得其實最好的方式是看官方文件,甚至是直接去看Source Code,
因為這些元件是軟體,他們也會隨者開發者的開發,而有了一些的改變,
經年累月後,即便當下這些文章寫的內容是正確的,也會慢慢的變得不那麼正確,
文章是死的,軟體是活的。
不過言歸正傳,一開始的時候開發者可能還沒有這麼多的理解,
因此靠不同開發者的闡述,也是必經的過程就是。
Activity:官方解釋網址
基本上Activity是整個Android 的核心元件,
幾乎沒有App的開發不會接觸到這個元件的,他是整個App與使用者互動的基礎畫面介面元件。
但筆者認為最值得了解的部分,是他的發展沿革以及他跟其他核心元件例如Context的關係。
Activity 從API 1就有了, 期間經歷過百家爭鳴的4.x ActionBar時期,
5.x之後有了Toolbar至此開始越來越自由,到現在的AppCompatActivity,
這裡面的每個改變對當時來說,都是很驚人的變化,到了現在可以說是時代的眼淚,
未來也許會有更多的改變也說不定。
(以前的Drawlayout到現在的NavigationLayout也是一個例子)
目前Activity 預設初始化的AppCompatActivity,他的每個繼承的class,
AppCompatActivity -> FragmentActivity -> SupportActivity -> Activity,
都值得一探。
Activity
最初的Activity,八千行的程式碼,所有的寶藏都在這裡面了。
SupportActivity
這個Activity改動的幅度好像有點深,筆者怕講錯,就不說自己的見解了了。
FragmentActivity
4.x的時候,Fragment開始很兇,後來Activity的開發方向覺得Activity應該內建啊,他就出現了。
AppCompatActivity
Android OS在畫面上的操作越來越開放,例如希望全畫面沈浸式感受,
就需要去控制StatusBar or Home Back鍵,同時ActionBarActivity也有許多設計上的極限,就出現了這個。
p.s. 逝去的ActionBarActivity,我們懷念他。
Service:官方解釋網址
一般來說Android提到Service,都是Background Service,
筆者對他的理解,簡而言之是一個沒有畫面的Activity,但可以在背景執行,
不過隨著Android OS的升級,對權限的要求越來越嚴格,
現在已經越來越不適宜用來開發了,筆者認為應該會慢慢的被JobScheduler與Foreground Service取代。
(以前很多Android service的Sample code現在都不能用了!)
可能會有人問,啊我公司產品的功能還是要求要在背景偷偷執行,
這種要求怎麼辦?老闆他們不管就是要我想辦法。
這是一門學問,叫Service保活,但筆者不太建議花時間研究就是…
突然發現寫了好長的篇幅,還有兩個元件明日再敘。
本文同步刊登在Medium上,連結在此。